/**
 * axios全局配置，包括验证校验及错误处理
 */
import axios from 'axios'
import qs from 'qs'
import store from '../store'
import router from '../router'
axios.defaults.withCredentials = true


// 超时和URL地址设置
const service = axios.create({
    // baseURL: "http://192.168.1.62:8010/api/v1/",
    // withCredentials: true,
    // headers: { 'Content-Type': 'application/json' },
    timeout: 5000 // 请求超时时间
});


//测试
// const service = axios.create({
//     baseURL: "http://192.168.10.77:8080/mes/",
//     withCredentials: true,
//     headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
//     timeout: 5000, // 请求超时时间
//     transformRequest: [function(data) {
//         data = { "json": qs.stringify(data) }
//         return data
//     }]
// });

// http request 拦截器
// 每次请求都为http头增加Authorization字段，其内容为token
// service.interceptors.request.use(
//     config => {
//         if (store.state.user.token) {
//             config.headers.Authorization = `token ${store.state.user.token}`;
//         }
//         return config;
//     },
//     err => {
//         return Promise.reject(err);
//     });

//POST传参序列化
// service.interceptors.request.use((config) => {
//     if (config.method === 'post') {
//         config.data = qs.stringify(config.data);
//     }
//     return config;
// }, (error) => {
//     return Promise.reject(error);
// })


// http response 拦截器
// 针对响应代码确认跳转到对应页面
service.interceptors.response.use(
    response => response,
    error => {
        if (error.response) {
            switch (error.response.status) {
                case 401:
                    router.push('error/401');
                case 403:
                    router.push('error/403');
            }
        }
        // console.log(JSON.stringify(error));//console : Error: Request failed with status code 402
        return Promise.reject(error.response.data)
    }
);

export default service;